#pragma once
#include <string>


namespace Stream
{
enum StreamType
{
    kStreamTypeRtsp,    // rtsp
    kStreamTypeUsb,     // usb
    kStreamTypeAudio,   // audio device
};

enum HWDeviceType
{
    kHWDeviceTypeNone,
    kHWDeviceTypeVDPAU,
    kHWDeviceTypeCUDA,
    kHWDeviceTypeVAAPI,
    kHWDeviceTypeDXVA2,
    kHWDeviceTypeQSV,
    kHWDeviceTypeVIDEOTOOLBOX,
    kHWDeviceTypeD3D11VA,
    kHWDeviceTypeDRM,
    kHWDeviceTypeOPENCL,
    kHWDeviceTypeMEDIACODEC,
};

// stream info
struct StreamInfo
{
    int nRefCount = 0;
    std::string strInput;       // input
    std::string strOutput;      // output
    bool bSavePic = false;      // save frame
    bool bSaveVideo = false;    // save video
    int nVideoTime = 10;        // time for each video
    bool bRtmp = false;         // rtmp
    int nWidth = 0;
    int nHeight = 0;
    int nPixFmt = 0;
    // hard device accelate
    HWDeviceType nHDType = kHWDeviceTypeNone;
    int nFrameRate = 25;
    int nVideoIndex = -1;
    int nAudioIndex = -1;
};

enum FileNameType
{
    kFileTypePicture,       // picture
    kFileTypeVideo,         // video
    kFileTypeRtmp,          // rtmp
    kFileTypeAudio,         // audio
};
};
